Dialog: Projekteinstellungen: Static Analysis Light
Symbol: 
Funktion: Der Dialog aktiviert die Prüfungen, die bei der Light-Version der Statischen Analyse in CODESYS bei einer Codeerzeugung jeweils durchführt werden.
Aufruf: Befehl , Kategorie Static Analysis Light
Tipp
Sie können die statische Codeanalyse für Codeteile ausschließen, indem Sie den Code mit dem Pragma {analysis} oder dem Pragma {attribute 'analysis' := '...'} kennzeichnen.
Für weitere Informationen siehe: Code statisch analysieren
Zusätzliche Kompilierungsprüfungen
SA0033: Nicht verwendete Variablen | Ermittelt Variablen, die deklariert sind, aber innerhalb des kompilierten Programmcodes nicht verwendet werden Für GVL-Variablen: Wenn es in einem Projekt mehrere Applikationen gibt, werden nur die Objekte unter der gerade aktiven Applikation berücksichtigt. Wenn es nur eine einzige Applikation gibt, werden auch die Objekte in der Ansicht |
SA0028: Überlappende Speicherbereiche | Ermittelt die Codestellen, durch die 2 oder mehr Variablen denselben Speicherplatz belegen Beispielsweise tritt dies auf, wenn es die folgenden Deklarationen gibt: |
SA0006: Schreibzugriff aus mehreren Tasks | Ermittelt Variablen, auf die von mehr als einer Task geschrieben werden |
SA0004: Mehrfacher Schreibzugriff auf Ausgang | Ermittelt Ausgänge, die an mehr als einer Position geschrieben werden Hinweis: Es wird kein Fehler ausgegeben, wenn auf eine Ausgabevariable ( Hinweis: Diese Regel kann nicht über Pragma abgeschaltet werden! |
SA0027: Mehrfachverwendungen von Bezeichnern | Ermittelt Mehrfachverwendung des Namens/Bezeichners einer Variable oder eines Objekts (POU) innerhalb des Gültigkeitsbereichs eines Projekts . Die folgenden Fälle werden abgedeckt:
|
SA0167: Temporäre Funktionsbaustein-Instanzen | Die Prüfung ermittelt Funktionsbaustein-Instanzen, die als temporäre Variablen deklariert sind. Dies betrifft Instanzen, die in einer Methode oder in einer Funktion oder als |
SA0175 : Verdächtige Operation bei einem String | Standardmäßig inaktiv Identifiziert Codestellen, die bei einer UTF-8-Kodierung verdächtig sind Folgende Konstrukte werden erfasst:
Abhängig vom Ergebnis der Prüfung ist es ratsam, die Compile-Option UTF-8-Kodierung für Strings nicht zu aktivieren. Für weitere Informationen siehe: Compile-Optionen |
SA0003: Leere Anweisungen
; (* Comment *); iVar;
SA0006: Gleichzeitiger Zugriff
FUNCTION_BLOCK ADD_FB g_iTemp1 := g_iTemp1 + INT#1;
PROGRAM PLC_PRG //controlled by MainTask g_iTemp1 := g_iTemp1 + INT#2; g_xTemp2 := g_iTemp1 > INT#10;
PROGRAM PLC_PRG_1 //controlled by SubTask g_iTemp1 := g_iTemp1 - INT#3; g_xTemp2 := g_iTemp1 < INT#-10;
SA0004: Mehrfacher Schreibzugriff auf Ausgang
VAR_GLOBAL
g_xVar AT %QX0.0 : BOOL ;
g_iTest AT %QW0 : INT ;
END_VARPROGRAM PLC_PRG
IF iCondition < INT#0 THEN
g_xVar := TRUE;
g_iTest := INT#12;
END_IFCASE iCondition OF
INT#1:
g_xVar := FALSE;
INT#2:
g_iTest := INT#11;
ELSE
g_xVar := TRUE;
g_iTest := INT#9;
END_CASESA0006: Schreibzugriff aus mehreren Tasks
FUNCTION_BLOCK ADD_FB g_iTemp1 := g_iTemp1 + INT#1;
PROGRAM PLC_PRG // Controlled by MainTask g_iTemp1 := g_iTemp1 + INT#2; g_xTemp2 := g_iTemp1 > INT#10;
PROGRAM PLC_PRG_1 //Controlled by SubTask g_iTemp1 := g_iTemp1 - INT#3; g_xTemp2 := g_iTemp1 < INT#-10;
SA0027: Mehrfachverwendung des Namens
PROGRAM PLC_PRG
VAR
ton : INT; // error SA0027
END_VARSA0029: Notation in Implementierung und Deklaration unterschiedlich
Im Gerätebaum gibt es einen Baustein PLC_PRG und einen Baustein fnc (Funktion).
PROGRAM PLC_PRG
VAR
iVar:INT;
_123test_var_: INT;
END_VAR
ivar := iVar + 1; // notation different to that in the declaration part -> SA0029 _123TEST_var_ := _123test_var_INT; // notation different to that in the declaration part -> SA0029 Fnc(); // notation different to that in the devices tree -> SA0029
SA0167: Temporäre Funktionsbaustein-Instanzen
PROGRAM PLC_PRG
VAR
END_VAR
VAR_TEMP
yafb: AFB;
END_VAR
FUNCTION Fun : INT
VAR_INPUT
END_VAR
VAR
funafb: AFB;
END_VARMETHOD METH: INT
VAR_INPUT
END_VAR
VAR
methafb: AFB;
END_VARFür weitere Informationen siehe: Code statisch analysieren